package com.hanxiaozhang.system.dao;

import com.hanxiaozhang.system.dto.DeptDTO;
import com.hanxiaozhang.system.entity.DeptEntity;

import java.util.List;
import java.util.Map;

import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Update;

/**
 * 部门表
 *
 * @author hanxiaozhang
 * @email hanxiaozhang2018@sina.com
 * @date 2021-03-21
 */
@Mapper
public interface DeptDao {

    DeptDTO get(Long deptId);

    List<DeptDTO> list(Map<String, Object> map);

    int save(DeptEntity dept);

    int update(DeptEntity dept);

    int remove(Long deptId);

    int batchRemove(Long[] deptIds);


    List<DeptEntity> listByDeptIds(@Param("deptIds") List<Long> deptIds);



    /**
     * 更新子部门个数通过id
     *
     * @param deptId
     * @param num
     * @return
     */
    @Update("UPDATE sys_dept SET sub_count = IFNULL(sub_count,0) + (#{num}) WHERE dept_id =#{deptId} AND del_flag = 0")
    int updateSubCountById(@Param("deptId") Long deptId, @Param("num") Integer num);


    /**
     * 更新子部门个数通过id集合
     *
     *  update `sys_dept` set sub_count = IFNULL(sub_count,0) + (-1)
     *         where `del_flag` = 0 and dept_id  in （1,1,1） 这种情况值更新一次
     *
     * @param deptIds
     * @param num
     * @return
     */
    @Deprecated
    int updateSubCountByIds(@Param("deptIds") Long[] deptIds, @Param("num") Integer num);

}
